/**
 * Copyright (C) T-Systems International, 2013-2014
 * <p/>
 * The copyright of the computer program herein is the property of
 * T-Systems International. The program may be used and/or copied
 * only with the written permission of T-Systems International or in
 * accordance with the terms and conditions stipulated in the
 * agreement/contract under which the program has been supplied.
 * <p/>
 * $Author: kuzin43 $
 * $Date: 2014-10-16 13:27:35 +0000 (Thu, 16 Oct 2014) $
 * $Rev: 84 $
 */
package com.tsystems.bsipp.dm.persistence.model;

import com.tsystems.bsipp.dm.persistence.enumeration.DqpStatusValues;
import com.tsystems.bsipp.dm.persistence.enumeration.LineStatusValues;
import com.tsystems.bsipp.dm.persistence.enumeration.PackageExclusionReasonValues;

import javax.persistence.*;

import java.util.Date;

import static com.tsystems.bsipp.dm.persistence.model.ModelConstants.*;

@Entity
public class Line extends AbstractEntity {

    @Column(length = STRING_LENGTH_5)
    private String localAreaCode;

    @Column(length = STRING_LENGTH_15)
    private String telephoneNumber;

    @Column(length = STRING_LENGTH_18)
    private String meterialNumber;

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Date contractStarting;

    @Column(length = STRING_LENGTH_10)
    private String customerNumber;

    @Column(length = STRING_LENGTH_2)
    private String vbkz;

    @Column(length = STRING_LENGTH_100)
    private String vbkzShortDescription;

    @Column
    private int billingAccount;

    @Column
    private int toid;

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Date dateOfBirth;

    @Column(columnDefinition = "BIT", length = 1)
    private boolean advertisingAgreement;

    @Column
    private int salutationKey;

    @Column(length = STRING_LENGTH_75)
    private String title;

    @Column(length = STRING_LENGTH)
    private String firstName;

    @Column(length = STRING_LENGTH_30)
    private String historicalAdding;

    @Column(length = STRING_LENGTH_10)
    private String namePrefix;

    @Column(length = STRING_LENGTH_101)
    private String name;

    @Column(length = STRING_LENGTH_10)
    private String miscNameAdding;

    @Column(length = STRING_LENGTH_200)
    private String street;

    @Column(length = STRING_LENGTH_20)
    private String houseNumber;

    @Column(length = STRING_LENGTH_20)
    private String houseNumberAdding;

    @Column(length = STRING_LENGTH_30)
    private String postCode;

    @Column(length = STRING_LENGTH)
    private String location;

    @Column(length = STRING_LENGTH_30)
    private String country;

    @Column(length = STRING_LENGTH)
    private String district;

    @Column(length = STRING_LENGTH_10)
    private String mailbox;

    @Column(length = STRING_LENGTH_17)
    private String tnbald;

    @Column(length = STRING_LENGTH_11)
    private String vstkNr;

    @ManyToOne
    @JoinColumn(name = "connection_area_id", referencedColumnName = "id", nullable = false)
    private ConnectionArea connectionArea;

    @ManyToOne
    @JoinColumn(name = "migration_package_id", referencedColumnName = "id", nullable = false)
    private MigrationPackage migrationPackage;

    @Column(length = STRING_LENGTH_16)
    private String portlage;

    @Column(length = STRING_LENGTH_10)
    private String hvtVbsNr;

    @Column(length = STRING_LENGTH_13)
    private String hvtLbsNr;

    @Column(length = STRING_LENGTH)
    private String accessType;

    @Column(length = STRING_LENGTH_8)
    private String dlu;

    @Column
    private int lsz;

    @Column(columnDefinition = "BIT", length = 1)
    private boolean hasSiPa;

    @Column(columnDefinition = "BIT", length = 1)
    private boolean isKriegsblind;

    @Column(columnDefinition = "BIT", length = 1)
    private boolean hasCrmSource;

    @Column(columnDefinition = "BIT", length = 1)
    private boolean hasSocial1;

    @Column(columnDefinition = "BIT", length = 1)
    private boolean hasSocial2;

    @Column(columnDefinition = "BIT", length = 1)
    private boolean hasMyTho;

    @Column
    private String dslAvailability;

    @Column(columnDefinition = "BIT", length = 1)
    private boolean hasZmp1;

    @Column(columnDefinition = "BIT", length = 1)
    private boolean hasZmp2;

    @Column(columnDefinition = "BIT", length = 1)
    private boolean hasZmp3;

    @Column(columnDefinition = "BIT", length = 1)
    private boolean hasZmp4;

    @Column(columnDefinition = "BIT", length = 1)
    private boolean hasZmp5;

    @Column(columnDefinition = "BIT", length = 1)
    private boolean hasZmp6;

    @Column(columnDefinition = "BIT", length = 1)
    private boolean hasZmp7;

    @Column(columnDefinition = "BIT", length = 1)
    private boolean hasZmp8;

    @Column(columnDefinition = "BIT", length = 1)
    private boolean hasZmp9;

    @Column(columnDefinition = "BIT", length = 1)
    private boolean hasZmp10;

    @Enumerated(EnumType.STRING)
    @Column(length = STRING_LENGTH)
    private LineStatusValues lineStatusValues;

    @Enumerated(EnumType.STRING)
    @Column(length = STRING_LENGTH)
    private DqpStatusValues dqpStatusValues;

    @ManyToOne
    @JoinColumn(name = "block_reason_id", referencedColumnName = "id", nullable = false)
    private BlockReason blockReason;

    @Column(length = URL_LENGTH)
    private String blockReasonFreeText;

    @Column(columnDefinition = "BIT", length = 1)
    private boolean hasMoveRelevanceInvalidDataSet;

    @Column
    private int reprocessingCounter;

    @Column
    private int scanImageId;

    @Enumerated(EnumType.STRING)
    @Column(length = STRING_LENGTH)
    private PackageExclusionReasonValues packageExclusionReasonValues;

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Date dateOfMigration;

    @Column(columnDefinition = "BIT", length = 1)
    private boolean hasInformationFlagDkkNeu;

    public String getLocalAreaCode() {
        return localAreaCode;
    }

    public void setLocalAreaCode(String localAreaCode) {
        this.localAreaCode = localAreaCode;
    }

    public String getTelephoneNumber() {
        return telephoneNumber;
    }

    public void setTelephoneNumber(String telephoneNumber) {
        this.telephoneNumber = telephoneNumber;
    }

    public String getMeterialNumber() {
        return meterialNumber;
    }

    public void setMeterialNumber(String meterialNumber) {
        this.meterialNumber = meterialNumber;
    }

    public Date getContractStarting() {
        return contractStarting;
    }

    public void setContractStarting(Date contractStarting) {
        this.contractStarting = contractStarting;
    }

    public String getCustomerNumber() {
        return customerNumber;
    }

    public void setCustomerNumber(String customerNumber) {
        this.customerNumber = customerNumber;
    }

    public String getVbkz() {
        return vbkz;
    }

    public void setVbkz(String vbkz) {
        this.vbkz = vbkz;
    }

    public String getVbkzShortDescription() {
        return vbkzShortDescription;
    }

    public void setVbkzShortDescription(String vbkzShortDescription) {
        this.vbkzShortDescription = vbkzShortDescription;
    }

    public int getBillingAccount() {
        return billingAccount;
    }

    public void setBillingAccount(int billingAccount) {
        this.billingAccount = billingAccount;
    }

    public int getToid() {
        return toid;
    }

    public void setToid(int toid) {
        this.toid = toid;
    }

    public Date getDateOfBirth() {
        return dateOfBirth;
    }

    public void setDateOfBirth(Date dateOfBirth) {
        this.dateOfBirth = dateOfBirth;
    }

    public boolean isAdvertisingAgreement() {
        return advertisingAgreement;
    }

    public void setAdvertisingAgreement(boolean advertisingAgreement) {
        this.advertisingAgreement = advertisingAgreement;
    }

    public int getSalutationKey() {
        return salutationKey;
    }

    public void setSalutationKey(int salutationKey) {
        this.salutationKey = salutationKey;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getHistoricalAdding() {
        return historicalAdding;
    }

    public void setHistoricalAdding(String historicalAdding) {
        this.historicalAdding = historicalAdding;
    }

    public String getNamePrefix() {
        return namePrefix;
    }

    public void setNamePrefix(String namePrefix) {
        this.namePrefix = namePrefix;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMiscNameAdding() {
        return miscNameAdding;
    }

    public void setMiscNameAdding(String miscNameAdding) {
        this.miscNameAdding = miscNameAdding;
    }

    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }

    public String getHouseNumber() {
        return houseNumber;
    }

    public void setHouseNumber(String houseNumber) {
        this.houseNumber = houseNumber;
    }

    public String getHouseNumberAdding() {
        return houseNumberAdding;
    }

    public void setHouseNumberAdding(String houseNumberAdding) {
        this.houseNumberAdding = houseNumberAdding;
    }

    public String getPostCode() {
        return postCode;
    }

    public void setPostCode(String postCode) {
        this.postCode = postCode;
    }

    public String getLocation() {
        return location;
    }

    public void setLocation(String location) {
        this.location = location;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    public String getDistrict() {
        return district;
    }

    public void setDistrict(String district) {
        this.district = district;
    }

    public String getMailbox() {
        return mailbox;
    }

    public void setMailbox(String mailbox) {
        this.mailbox = mailbox;
    }

    public String getTnbald() {
        return tnbald;
    }

    public void setTnbald(String tnbald) {
        this.tnbald = tnbald;
    }

    public String getVstkNr() {
        return vstkNr;
    }

    public void setVstkNr(String vstkNr) {
        this.vstkNr = vstkNr;
    }

    public ConnectionArea getConnectionArea() {
        return connectionArea;
    }

    public void setConnectionArea(ConnectionArea connectionArea) {
        this.connectionArea = connectionArea;
    }

    public String getPortlage() {
        return portlage;
    }

    public void setPortlage(String portlage) {
        this.portlage = portlage;
    }

    public String getHvtVbsNr() {
        return hvtVbsNr;
    }

    public void setHvtVbsNr(String hvtVbsNr) {
        this.hvtVbsNr = hvtVbsNr;
    }

    public String getHvtLbsNr() {
        return hvtLbsNr;
    }

    public void setHvtLbsNr(String hvtLbsNr) {
        this.hvtLbsNr = hvtLbsNr;
    }

    public String getAccessType() {
        return accessType;
    }

    public void setAccessType(String accessType) {
        this.accessType = accessType;
    }

    public String getDlu() {
        return dlu;
    }

    public void setDlu(String dlu) {
        this.dlu = dlu;
    }

    public int getLsz() {
        return lsz;
    }

    public void setLsz(int lsz) {
        this.lsz = lsz;
    }

    public boolean isHasSiPa() {
        return hasSiPa;
    }

    public void setHasSiPa(boolean hasSiPa) {
        this.hasSiPa = hasSiPa;
    }

    public boolean isKriegsblind() {
        return isKriegsblind;
    }

    public void setKriegsblind(boolean isKriegsblind) {
        this.isKriegsblind = isKriegsblind;
    }

    public boolean isHasCrmSource() {
        return hasCrmSource;
    }

    public void setHasCrmSource(boolean hasCrmSource) {
        this.hasCrmSource = hasCrmSource;
    }

    public boolean isHasSocial1() {
        return hasSocial1;
    }

    public void setHasSocial1(boolean hasSocial1) {
        this.hasSocial1 = hasSocial1;
    }

    public boolean isHasSocial2() {
        return hasSocial2;
    }

    public void setHasSocial2(boolean hasSocial2) {
        this.hasSocial2 = hasSocial2;
    }

    public boolean isHasMyTho() {
        return hasMyTho;
    }

    public void setHasMyTho(boolean hasMyTho) {
        this.hasMyTho = hasMyTho;
    }

    public String getDslAvailability() {
        return dslAvailability;
    }

    public void setDslAvailability(String dslAvailability) {
        this.dslAvailability = dslAvailability;
    }

    public boolean isHasZmp1() {
        return hasZmp1;
    }

    public void setHasZmp1(boolean hasZmp1) {
        this.hasZmp1 = hasZmp1;
    }

    public boolean isHasZmp2() {
        return hasZmp2;
    }

    public void setHasZmp2(boolean hasZmp2) {
        this.hasZmp2 = hasZmp2;
    }

    public boolean isHasZmp3() {
        return hasZmp3;
    }

    public void setHasZmp3(boolean hasZmp3) {
        this.hasZmp3 = hasZmp3;
    }

    public boolean isHasZmp4() {
        return hasZmp4;
    }

    public void setHasZmp4(boolean hasZmp4) {
        this.hasZmp4 = hasZmp4;
    }

    public boolean isHasZmp5() {
        return hasZmp5;
    }

    public void setHasZmp5(boolean hasZmp5) {
        this.hasZmp5 = hasZmp5;
    }

    public boolean isHasZmp6() {
        return hasZmp6;
    }

    public void setHasZmp6(boolean hasZmp6) {
        this.hasZmp6 = hasZmp6;
    }

    public boolean isHasZmp7() {
        return hasZmp7;
    }

    public void setHasZmp7(boolean hasZmp7) {
        this.hasZmp7 = hasZmp7;
    }

    public boolean isHasZmp8() {
        return hasZmp8;
    }

    public void setHasZmp8(boolean hasZmp8) {
        this.hasZmp8 = hasZmp8;
    }

    public boolean isHasZmp9() {
        return hasZmp9;
    }

    public void setHasZmp9(boolean hasZmp9) {
        this.hasZmp9 = hasZmp9;
    }

    public boolean isHasZmp10() {
        return hasZmp10;
    }

    public void setHasZmp10(boolean hasZmp10) {
        this.hasZmp10 = hasZmp10;
    }

    public LineStatusValues getLineStatusValues() {
        return lineStatusValues;
    }

    public void setLineStatusValues(LineStatusValues lineStatusValues) {
        this.lineStatusValues = lineStatusValues;
    }

    public DqpStatusValues getDqpStatusValues() {
        return dqpStatusValues;
    }

    public void setDqpStatusValues(DqpStatusValues dqpStatusValues) {
        this.dqpStatusValues = dqpStatusValues;
    }

    public BlockReason getBlockReason() {
        return blockReason;
    }

    public void setBlockReason(BlockReason blockReason) {
        this.blockReason = blockReason;
    }

    public String getBlockReasonFreeText() {
        return blockReasonFreeText;
    }

    public void setBlockReasonFreeText(String blockReasonFreeText) {
        this.blockReasonFreeText = blockReasonFreeText;
    }

    public boolean isHasMoveRelevanceInvalidDataSet() {
        return hasMoveRelevanceInvalidDataSet;
    }

    public void setHasMoveRelevanceInvalidDataSet(boolean hasMoveRelevanceInvalidDataSet) {
        this.hasMoveRelevanceInvalidDataSet = hasMoveRelevanceInvalidDataSet;
    }

    public int getReprocessingCounter() {
        return reprocessingCounter;
    }

    public void setReprocessingCounter(int reprocessingCounter) {
        this.reprocessingCounter = reprocessingCounter;
    }

    public int getScanImageId() {
        return scanImageId;
    }

    public void setScanImageId(int scanImageId) {
        this.scanImageId = scanImageId;
    }

    public PackageExclusionReasonValues getPackageExclusionReasonValues() {
        return packageExclusionReasonValues;
    }

    public void setPackageExclusionReasonValues(PackageExclusionReasonValues packageExclusionReasonValues) {
        this.packageExclusionReasonValues = packageExclusionReasonValues;
    }

    public Date getDateOfMigration() {
        return dateOfMigration;
    }

    public void setDateOfMigration(Date dateOfMigration) {
        this.dateOfMigration = dateOfMigration;
    }

    public boolean isHasInformationFlagDkkNeu() {
        return hasInformationFlagDkkNeu;
    }

    public void setHasInformationFlagDkkNeu(boolean hasInformationFlagDkkNeu) {
        this.hasInformationFlagDkkNeu = hasInformationFlagDkkNeu;
    }

    public MigrationPackage getMigrationPackage() {
        return migrationPackage;
    }

    public void setMigrationPackage(MigrationPackage migrationPackage) {
        this.migrationPackage = migrationPackage;
    }
}
